#include "../../includes/NeonCore/Colour.hpp"
using namespace Neon;

Colour::Colour()
	: R(0), G(0), B(0), A(255)
{ }

Colour::Colour(const nuint8 r, const nuint8 g, const nuint8 b, const nuint8 a)
	: R(r), G(g), B(b), A(a)
{ }

Colour::Colour(const Colour &colour)
	: R(colour.R), G(colour.G), B(colour.B), A(colour.A)
{ }

void
Colour::operator =(const Colour &rhs)
{
	R = rhs.R;
	G = rhs.G;
	B = rhs.B;
	A = rhs.A;
}

bool
Colour::operator ==(const Colour &rhs) const
{
	if(R == rhs.R && G == rhs.G && B == rhs.G && A == rhs.A) {
		return true;
	}

	return false;
}

bool
Colour::operator !=(const Colour &rhs) const
{
	if(R != rhs.R || G != rhs.G || B != rhs.B || A != rhs.A) {
		return true;
	}

	return false;
}

Colour
Colour::aliceBlue()
{
	return Colour(240, 248, 255);
}

Colour
Colour::alizarlin()
{
	return Colour(227, 38, 54);
}

Colour
Colour::amaranth()
{
	return Colour(229, 43, 80);
}

Colour
Colour::amber()
{
	return Colour(255, 191, 0);
}

Colour
Colour::amethyst()
{
	return Colour(153, 102, 204);
}

Colour
Colour::apricot()
{
	return Colour(251, 206, 177);
}

Colour
Colour::aqua()
{
	return Colour(0, 255, 255);
}

Colour
Colour::aquamarine()
{
	return Colour(127, 255, 212);
}

Colour
Colour::armyGreen()
{
	return Colour(75, 83, 32);
}

Colour
Colour::asparagus()
{
	return Colour(123, 160, 91);
}

Colour
Colour::auburn()
{
	return Colour(111, 53, 26);
}

Colour
Colour::azure()
{
	return Colour(0, 127, 255);
}

Colour
Colour::babyBlue()
{
	return Colour(224, 255, 255);
}

Colour
Colour::beige()
{
	return Colour(245, 245, 220);
}

Colour
Colour::bistre()
{
	return Colour(61, 43, 31);
}

Colour
Colour::black()
{
	return Colour(0, 0, 0);
}

Colour
Colour::blue()
{
	return Colour(0, 0, 255);
}

Colour
Colour::blueGreen()
{
	return Colour(0, 223, 223);
}

Colour
Colour::blueViolet()
{
	return Colour(138, 43, 226);
}

Colour
Colour::bondiBlue()
{
	return Colour(0, 149, 182);
}

Colour
Colour::brass()
{
	return Colour(181, 166, 66);
}

Colour
Colour::brightGreen()
{
	return Colour(102, 255, 0);
}

Colour
Colour::brightTurquoise()
{
	return Colour(8, 232, 222);
}

Colour
Colour::brilliantRose()
{
	return Colour(255, 85, 163);
}

Colour
Colour::bronze()
{
	return Colour(205, 127, 50);
}

Colour
Colour::brown()
{
	return Colour(150, 75, 0);
}

Colour
Colour::buff()
{
	return Colour(240, 220, 130);
}

Colour
Colour::burgundy()
{
	return Colour(128, 0, 32);
}

Colour
Colour::burntOrange()
{
	return Colour(204, 85, 0);
}

Colour
Colour::burntSienna()
{
	return Colour(233, 116, 81);
}

Colour
Colour::burntUmber()
{
	return Colour(138, 51, 36);
}

Colour
Colour::camouflageGreen()
{
	return Colour(120, 134, 107);
}

Colour
Colour::caputMortuum()
{
	return Colour(89, 39, 32);
}

Colour
Colour::cardinal()
{
	return Colour(196, 30, 58);
}

Colour
Colour::carmine()
{
	return Colour(150, 0, 24);
}

Colour
Colour::carnationPink()
{
	return Colour(255, 166, 201);
}

Colour
Colour::carolinaBlue()
{
	return Colour(156, 186, 227);
}

Colour
Colour::carrotOrange()
{
	return Colour(237, 145, 33);
}

Colour
Colour::celadon()
{
	return Colour(172, 225, 175);
}

Colour
Colour::cerise()
{
	return Colour(222, 49, 99);
}

Colour
Colour::cerulean()
{
	return Colour(0, 123, 167);
}

Colour
Colour::ceruleanBlue()
{
	return Colour(42, 82, 190);
}

Colour
Colour::chartreuse()
{
	return Colour(223, 255, 0);
}

Colour
Colour::chestnut()
{
	return Colour(205, 92, 92);
}

Colour
Colour::chocolate()
{
	return Colour(123, 63, 0);
}

Colour
Colour::cinnabar()
{
	return Colour(227, 66, 52);
}

Colour
Colour::cinnamon()
{
	return Colour(210, 105, 30);
}

Colour
Colour::cobalt()
{
	return Colour(0, 71, 171);
}

Colour
Colour::columbiaBlue()
{
	return Colour(155, 221, 255);
}

Colour
Colour::copper()
{
	return Colour(184, 115, 51);
}

Colour
Colour::copperRose()
{
	return Colour(153, 102, 102);
}

Colour
Colour::coral()
{
	return Colour(255, 127, 80);
}

Colour
Colour::coralRed()
{
	return Colour(255, 64, 64);
}

Colour
Colour::corn()
{
	return Colour(251, 236, 93);
}

Colour
Colour::cornflowerBlue()
{
	return Colour(100, 149, 227);
}

Colour
Colour::cosmicLatte()
{
	return Colour(255, 248, 231);
}

Colour
Colour::cream()
{
	return Colour(255, 253, 208);
}

Colour
Colour::crimson()
{
	return Colour(220, 20, 60);
}

Colour
Colour::cyan()
{
	return Colour(0, 255, 255);
}

Colour
Colour::darkBlue()
{
	return Colour(0, 0, 139);
}

Colour
Colour::darkBrown()
{
	return Colour(101, 67, 33);
}

Colour
Colour::darkCerulean()
{
	return Colour(8, 69, 126);
}

Colour
Colour::darkChestnut()
{
	return Colour(152, 105, 96);
}

Colour
Colour::darkCoral()
{
	return Colour(205, 91, 69);
}

Colour
Colour::darkGoldenrod()
{
	return Colour(184, 134, 11);
}

Colour
Colour::darkGreen()
{
	return Colour(1, 50, 32);
}

Colour
Colour::darkKhaki()
{
	return Colour(189, 183, 107);
}

Colour
Colour::darkPastelGreen()
{
	return Colour(3, 192, 60);
}

Colour
Colour::darkPink()
{
	return Colour(231, 84, 128);
}

Colour
Colour::darkSalmon()
{
	return Colour(233, 150, 122);
}

Colour
Colour::darkSlateGray()
{
	return Colour(47, 79, 79);
}

Colour
Colour::darkSpringGreen()
{
	return Colour(23, 114, 69);
}

Colour
Colour::darkTan()
{
	return Colour(145, 129, 81);
}

Colour
Colour::darkTangerine()
{
	return Colour(255, 168, 18);
}

Colour
Colour::darkTurquoise()
{
	return Colour(17, 96, 98);
}

Colour
Colour::darkViolet()
{
	return Colour(66, 49, 137);
}

const nuint8*
Colour::data() const
{
	return &R;
}

nuint8*
Colour::data()
{
	return &R;
}

Colour
Colour::deepCerise()
{
	return Colour(218, 50, 135);
}

Colour
Colour::deepFuchsia()
{
	return Colour(193, 84, 193);
}

Colour
Colour::deepLilac()
{
	return Colour(153, 85, 187);
}

Colour
Colour::deepMagenta()
{
	return Colour(204, 0, 204);
}

Colour
Colour::deepPeach()
{
	return Colour(255, 203, 164);
}

Colour
Colour::deepPink()
{
	return Colour(255, 20, 147);
}

Colour
Colour::denim()
{
	return Colour(21, 96, 189);
}

Colour
Colour::dodgerBlue()
{
	return Colour(30, 144, 255);
}

Colour
Colour::ecru()
{
	return Colour(194, 178, 128);
}

Colour
Colour::eggplant()
{
	return Colour(153, 0, 102);
}

Colour
Colour::egyptianBlue()
{
	return Colour(16, 52, 166);
}

Colour
Colour::electricBlue()
{
	return Colour(125, 249, 255);
}

Colour
Colour::electricIndigo()
{
	return Colour(102, 0, 255);
}

Colour
Colour::electricLime()
{
	return Colour(204, 255, 0);
}

Colour
Colour::electricPurple()
{
	return Colour(191, 0, 255);
}

Colour
Colour::emerald()
{
	return Colour(80, 200, 120);
}

Colour
Colour::faluRed()
{
	return Colour(128, 24, 24);
}

Colour
Colour::fernGreen()
{
	return Colour(79, 121, 66);
}

Colour
Colour::firebrick()
{
	return Colour(178, 34, 34);
}

Colour
Colour::flax()
{
	return Colour(238, 220, 130);
}

Colour
Colour::forestGreen()
{
	return Colour(34, 139, 34);
}

Colour
Colour::frenchRose()
{
	return Colour(246, 74, 138);
}

Colour
Colour::fuchsia()
{
	return Colour(255, 0, 255);
}

Colour
Colour::fuchsiaPink()
{
	return Colour(255, 119, 255);
}

Colour
Colour::gamboge()
{
	return Colour(228, 155, 15);
}

Colour
Colour::gold()
{
	return Colour(255, 215, 0);
}

Colour
Colour::goldenBrown()
{
	return Colour(153, 101, 21);
}

Colour
Colour::goldenrod()
{
	return Colour(218, 165, 32);
}

Colour
Colour::goldenYellow()
{
	return Colour(255, 223, 0);
}

Colour
Colour::goldMetallic()
{
	return Colour(212, 175, 55);
}

Colour
Colour::green()
{
	return Colour(0, 128, 0);
}

Colour
Colour::greenYellow()
{
	return Colour(173, 255, 47);
}

Colour
Colour::grey()
{
	return Colour(128, 128, 128);
}

Colour
Colour::greyAsparagus()
{
	return Colour(70, 89, 89);
}

Colour
Colour::hanPurple()
{
	return Colour(82, 24, 250);
}

Colour
Colour::harlequin()
{
	return Colour(63, 255, 0);
}

Colour
Colour::heliotrope()
{
	return Colour(223, 115, 255);
}

Colour
Colour::hollywoodCerise()
{
	return Colour(244, 0, 161);
}

Colour
Colour::hotMagenta()
{
	return Colour(255, 0, 204);
}

Colour
Colour::hotPink()
{
	return Colour(255, 105, 180);
}

Colour
Colour::indigo()
{
	return Colour(75, 0, 130);
}

Colour
Colour::internationalKleinBlue()
{
	return Colour(0, 47, 167);
}

Colour
Colour::internationalOrange()
{
	return Colour(255, 79, 0);
}

Colour
Colour::islamicGreen()
{
	return Colour(0, 153, 0);
}

Colour
Colour::ivory()
{
	return Colour(255, 255, 240);
}

Colour
Colour::jade()
{
	return Colour(0, 168, 107);
}

Colour
Colour::kellyGreen()
{
	return Colour(76, 187, 23);
}

Colour
Colour::khaki()
{
	return Colour(195, 176, 145);
}

Colour
Colour::lavender()
{
	return Colour(181, 126, 220);
}

Colour
Colour::lavenderBlue()
{
	return Colour(204, 204, 255);
}

Colour
Colour::lavenderBlush()
{
	return Colour(255, 240, 245);
}

Colour
Colour::lavenderGrey()
{
	return Colour(196, 195, 221);
}

Colour
Colour::lavenderMagenta()
{
	return Colour(238, 130, 238);
}

Colour
Colour::lavenderPink()
{
	return Colour(251, 174, 210);
}

Colour
Colour::lavenderPurple()
{
	return Colour(150, 120, 182);
}

Colour
Colour::lavenderRose()
{
	return Colour(251, 160, 227);
}

Colour
Colour::lawnGreen()
{
	return Colour(124, 252, 0);
}

Colour
Colour::lemon()
{
	return Colour(253, 223, 16);
}

Colour
Colour::lemonChifflon()
{
	return Colour(255, 250, 205);
}

Colour
Colour::lightBlue()
{
	return Colour(173, 216, 230);
}

Colour
Colour::lilac()
{
	return Colour(200, 162, 230);
}

Colour
Colour::lime()
{
	return Colour(0, 255, 0);
}

Colour
Colour::limeGreen()
{
	return Colour(50, 205, 50);
}

Colour
Colour::linen()
{
	return Colour(250, 240, 230);
}

Colour
Colour::magenta()
{
	return Colour(255, 0, 255);
}

Colour
Colour::magnolia()
{
	return Colour(248, 244, 255);
}

Colour
Colour::malachite()
{
	return Colour(11, 218, 81);
}

Colour
Colour::maroon()
{
	return Colour(128, 0, 0);
}

Colour
Colour::mauve()
{
	return Colour(224, 176, 255);
}

Colour
Colour::mauveTaupe()
{
	return Colour(145, 95, 109);
}

Colour
Colour::mayaBlue()
{
	return Colour(115, 194, 251);
}

Colour
Colour::mediumBlue()
{
	return Colour(0, 0, 205);
}

Colour
Colour::mediumCarmine()
{
	return Colour(175, 64, 53);
}

Colour
Colour::mediumPurple()
{
	return Colour(147, 112, 219);
}

Colour
Colour::midnightBlue()
{
	return Colour(0, 51, 102);
}

Colour
Colour::mintGreen()
{
	return Colour(152, 255, 152);
}

Colour
Colour::mistyRose()
{
	return Colour(255, 228, 225);
}

Colour
Colour::mountbattenPink()
{
	return Colour(153, 122, 141);
}

Colour
Colour::mustard()
{
	return Colour(255, 219, 88);
}

Colour
Colour::myrtle()
{
	return Colour(33, 55, 30);
}

Colour
Colour::navajoWhite()
{
	return Colour(255, 222, 173);
}

Colour
Colour::navyBlue()
{
	return Colour(0, 0, 128);
}

Colour
Colour::ochre()
{
	return Colour(204, 119, 34);
}

Colour
Colour::officeGreen()
{
	return Colour(0, 128, 0);
}

Colour
Colour::oldGold()
{
	return Colour(207, 181, 59);
}

Colour
Colour::oldLace()
{
	return Colour(255, 245, 230);
}

Colour
Colour::oldLavender()
{
	return Colour(121, 104, 120);
}

Colour
Colour::oldRose()
{
	return Colour(192, 46, 76);
}

Colour
Colour::olive()
{
	return Colour(128, 128, 0);
}

Colour
Colour::oliveDrab()
{
	return Colour(107, 142, 35);
}

Colour
Colour::oliveine()
{
	return Colour(154, 185, 115);
}

Colour
Colour::orange()
{
	return Colour(255, 165, 0);
}

Colour
Colour::orangePeel()
{
	return Colour(255, 160, 0);
}

Colour
Colour::orangeRed()
{
	return Colour(255, 69, 0);
}

Colour
Colour::orchid()
{
	return Colour(218, 112, 214);
}

Colour
Colour::paleBlue()
{
	return Colour(175, 238, 238);
}

Colour
Colour::paleBrown()
{
	return Colour(152, 118, 84);
}

Colour
Colour::paleCarmine()
{
	return Colour(175, 64, 53);
}

Colour
Colour::paleChestnut()
{
	return Colour(221, 173, 175);
}

Colour
Colour::paleCornflowerBlue()
{
	return Colour(171, 205, 239);
}

Colour
Colour::paleMagenta()
{
	return Colour(249, 132, 229);
}

Colour
Colour::palePink()
{
	return Colour(250, 218, 221);
}

Colour
Colour::paleRedViolet()
{
	return Colour(219,  112, 147);
}

Colour
Colour::papayaWhip()
{
	return Colour(255, 239, 213);
}

Colour
Colour::pastelGreen()
{
	return Colour(119, 221, 119);
}

Colour
Colour::pastelPink()
{
	return Colour(255, 209, 220);
}

Colour
Colour::peach()
{
	return Colour(255, 229, 180);
}

Colour
Colour::peachOrange()
{
	return Colour(255, 204, 253);
}

Colour
Colour::peachYellow()
{
	return Colour(250, 223, 173);
}

Colour
Colour::pear()
{
	return Colour(209, 226, 49);
}

Colour
Colour::periwinkle()
{
	return Colour(204, 204, 255);
}

Colour
Colour::persianBlue()
{
	return Colour(28, 57, 187);
}

Colour
Colour::persianGreen()
{
	return Colour(0, 166, 147);
}

Colour
Colour::persianIndigo()
{
	return Colour(50, 18, 122);
}

Colour
Colour::persianPink()
{
	return Colour(247, 127, 190);
}

Colour
Colour::persianRed()
{
	return Colour(204, 51, 51);
}

Colour
Colour::persianRose()
{
	return Colour(254, 40, 162);
}

Colour
Colour::persimmon()
{
	return Colour(236, 88, 0);
}

Colour
Colour::pineGreen()
{
	return Colour(1, 121, 111);
}

Colour
Colour::pink()
{
	return Colour(255, 192, 203);
}

Colour
Colour::pinkOrange()
{
	return Colour(255, 153, 102);
}

Colour
Colour::platinum()
{
	return Colour(229, 228, 226);
}

Colour
Colour::powderBlue()
{
	return Colour(176, 224, 230);
}

Colour
Colour::prussianBlue()
{
	return Colour(0, 49, 83);
}

Colour
Colour::puce()
{
	return Colour(204, 136, 153);
}

Colour
Colour::psychedelicPurple()
{
	return Colour(221, 0, 255);
}

Colour
Colour::pumpkin()
{
	return Colour(255, 117, 24);
}

Colour
Colour::purple()
{
	return Colour(128, 0, 128);
}

Colour
Colour::purpleTaupe()
{
	return Colour(80, 64, 77);
}

Colour
Colour::rawUmber()
{
	return Colour(115, 74, 18);
}

Colour
Colour::razzmatazz()
{
	return Colour(227, 11, 92);
}

Colour
Colour::red()
{
	return Colour(255, 0, 0);
}

Colour
Colour::redViolet()
{
	return Colour(199, 21, 133);
}

Colour
Colour::richCarmine()
{
	return Colour(215, 0, 64);
}

Colour
Colour::robinEggBlue()
{
	return Colour(0, 204, 204);
}

Colour
Colour::rose()
{
	return Colour(255, 0, 127);
}

Colour
Colour::roseTaupe()
{
	return Colour(144, 93, 93);
}

Colour
Colour::royalBlue()
{
	return Colour(65, 105, 225);
}

Colour
Colour::royalPurple()
{
	return Colour(107, 63, 160);
}

Colour
Colour::ruby()
{
	return Colour(224, 17, 95);
}

Colour
Colour::russet()
{
	return Colour(128, 70, 27);
}

Colour
Colour::rust()
{
	return Colour(183, 65, 14);
}

Colour
Colour::safetyOrange()
{
	return Colour(255, 102, 0);
}

Colour
Colour::saffron()
{
	return Colour(255, 196, 48);
}

Colour
Colour::salmon()
{
	return Colour(255, 140, 105);
}

Colour
Colour::sandyBrown()
{
	return Colour(244, 164, 96);
}

Colour
Colour::sangria()
{
	return Colour(146, 0, 10);
}

Colour
Colour::sapphire()
{
	return Colour(8, 37, 103);
}

Colour
Colour::satinSheenGold()
{
	return Colour(203, 161, 53);
}

Colour
Colour::scarlet()
{
	return Colour(255, 36, 0);
}

Colour
Colour::schoolBusYellow()
{
	return Colour(255, 216, 0);
}

Colour
Colour::seaGreen()
{
	return Colour(46, 139, 87);
}

Colour
Colour::seashell()
{
	return Colour(255, 245, 238);
}

Colour
Colour::selectiveYellow()
{
	return Colour(255, 186, 0);
}

Colour
Colour::sepia()
{
	return Colour(112, 66, 20);
}

Colour
Colour::shamrockGreen()
{
	return Colour(0, 158, 96);
}

Colour
Colour::shockingPink()
{
	return Colour(252, 15, 192);
}

Colour
Colour::silver()
{
	return Colour(192, 192, 192);
}

Colour
Colour::skyBlue()
{
	return Colour(135, 206, 235);
}

Colour
Colour::slateGrey()
{
	return Colour(112, 128, 144);
}

Colour
Colour::smalt()
{
	return Colour(0, 51, 153);
}

Colour
Colour::springBud()
{
	return Colour(167, 252, 0);
}

Colour
Colour::springGreen()
{
	return Colour(0, 255, 127);
}

Colour
Colour::steelBlue()
{
	return Colour(70, 130, 180);
}

Colour
Colour::tan()
{
	return Colour(210, 180, 140);
}

Colour
Colour::tangerine()
{
	return Colour(242, 133, 0);
}

Colour
Colour::tangerineYellow()
{
	return Colour(255, 204, 0);
}

Colour
Colour::taupe()
{
	return Colour(72, 60, 50);
}

Colour
Colour::teaGreen()
{
	return Colour(208, 240, 192);
}

Colour
Colour::teal()
{
	return Colour(0, 128, 128);
}

Colour
Colour::teaRose()
{
	return Colour(244, 194, 194);
}

Colour
Colour::tenne()
{
	return Colour(205, 87, 0);
}

Colour
Colour::terraCotta()
{
	return Colour(226, 114, 91);
}

Colour
Colour::thistle()
{
	return Colour(216, 191, 216);
}

Colour
Colour::turquoise()
{
	return Colour(48, 213, 200);
}

Colour
Colour::tyrianPurple()
{
	return Colour(102, 2, 60);
}

Colour
Colour::ultramarine()
{
	return Colour(18, 10, 143);
}

Colour
Colour::vermillion()
{
	return Colour(227, 66, 51);
}

Colour
Colour::violet()
{
	return Colour(139, 0, 255);
}

Colour
Colour::viridian()
{
	return Colour(64, 130, 109);
}

Colour
Colour::wheat()
{
	return Colour(245, 222, 179);
}

Colour
Colour::white()
{
	return Colour(255, 255, 255);
}

Colour
Colour::wisteria()
{
	return Colour(201, 160, 220);
}

Colour
Colour::yellow()
{
	return Colour(255, 255, 0);
}

Colour
Colour::yellowGreen()
{
	return Colour(154, 205, 50);
}

Colour
Colour::zinnwaldite()
{
	return Colour(235, 194, 175);
}
